/**
 * Copyright (c) 2018 qar All rights reserved.
 *
 * https://www.qar.io
 *
 * 版权所有，侵权必究！
 */

package com.example.service;

import com.example.dto.SysMenuDTO;
import com.example.entity.SysMenuEntity;
import com.example.entity.SysUserEntity;
import com.example.mybatis.service.BaseService;
import com.example.security.InfoDetail;

import java.util.List;
import java.util.Set;

/**
 * 菜单管理
 *
 * @author Mark sunlightcs@gmail.com
 * @since 1.0.0
 */
public interface SysMenuService extends BaseService<SysMenuEntity> {

    SysMenuDTO get(Long id);

    void save(SysMenuDTO dto);

    void update(SysMenuDTO dto);

    void delete(Long id);

    /**
     * 菜单列表
     *
     * @param type 菜单类型
     */
//    List<SysMenuDTO> getMenuList(Integer type);

    /**
     * 用户菜单列表
     *
     * @param type 菜单类型
     */

//    List<SysMenuDTO> getUserMenuList(Integer type);

    /**
     * 用户菜单导航
     */
    List<SysMenuDTO> getUserMenuNavList();

    /**
     * 获取用户权限标识
     */
//    Set<String> getLoginUserPermissions(SysUserEntity sysUserEntity);

    Set<String> findLoginUserPermissions(SysUserEntity sysUserEntity);

    Set<String> getUserPermissions(InfoDetail infoDetail);

    /**
     * 根据父菜单，查询子菜单
     * @param pid  父菜单ID
     */
    List<SysMenuDTO> getListPid(Long pid);

    List<SysMenuDTO> getMenuList(Integer type);
}